package controladores;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.swing.tree.DefaultMutableTreeNode;

import logica.Comentario;
import persistencia.PersistirComentario;
import datas.DataNombre;

public class ControladorComentario {

	public ControladorComentario(){}
	
/*********************************************************************************************************/
/********************************************************************************************************/
	/*------------------- INGRESAR COMENTARIO -------------- MAURO -------------*/
		

	public boolean addComentario(Comentario com) {
		try {
			new PersistirComentario().addComentario(com);
			return true;
		} 
		catch (SQLException e) {
			return false;
		}
	}
	
	
	
	public void getArbolComentariosObjeto(Map<Integer, Comentario> comentarios, DefaultMutableTreeNode cabeza){
		
		for (Integer id : comentarios.keySet()){
			DefaultMutableTreeNode nuevo = new DefaultMutableTreeNode();
			nuevo.setUserObject(comentarios.get(id));
			getArbolComentariosObjeto(comentarios.get(id).getComentarios(),nuevo);
			cabeza.add(nuevo);			
		}
	}
		

	//DEVUELVE UN MAPA DE COMENTARIOS DE EL JUEGO DE NOMBRE
	public Map<Integer, Comentario> cargarComentariosObjeto(DataNombre juego){
		Map<Integer, Comentario> comentarios = null;
		try {
			comentarios = new LinkedHashMap<Integer, Comentario>();
			PersistirComentario PC = new PersistirComentario();
			ResultSet rs = PC.getComentariosPropiosObjeto(juego);
			
			while(rs.next()){
				
				Comentario nuevo = new Comentario(rs.getInt("Id"), 
													rs.getString("Texto"), 
													rs.getDate("Fecha"), 
													rs.getString("Nombre"), 
													rs.getString("Nick"), 0);
				
				cargarSubComentariosObjeto(nuevo.getId(), nuevo.getComentarios());
				comentarios.put(nuevo.getId(), nuevo);
				
			}
			rs.close();
		} 
		catch (SQLException e) {
			e.printStackTrace();
		}
		return comentarios;
	}
	
	
	
	//CARGA EN EL MAPA DE COMENTARIOS TODOS SUS SUB-COMENTARIOS
	private static void cargarSubComentariosObjeto(int id, Map<Integer, Comentario> comentarios){
		try {
			PersistirComentario PC = new PersistirComentario();
			ResultSet rs = PC.getComentariosDeObjeto(id);
			
			while(rs.next()){
				Comentario nuevo = new Comentario(rs.getInt("Id"), 
													rs.getString("Texto"), 
													rs.getDate("Fecha"), 
													rs.getString("Nombre"), 
													rs.getString("Nick"), id);
				
				cargarSubComentariosObjeto(nuevo.getId(), nuevo.getComentarios());
				comentarios.put(nuevo.getId(), nuevo);
				
			}
			rs.close();
		} 
		catch (SQLException e) {
			e.printStackTrace();
		}
	}

	
}
